using System;
using System.ServiceModel;

namespace WCFServer.ServiceContracts
{
    [ServiceContract(Namespace = "http://WCFServer.ServiceContracts/2007/11", Name = "IServer", SessionMode = SessionMode.Required)]
    public interface IServer
    {
        [FaultContract(typeof(WCFServer.FaultContracts.DefaultFaultContract))]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "CreatePlayer")]
        WCFServer.ServiceContracts.CreatePlayerResponse CreatePlayer(WCFServer.ServiceContracts.CreateUserRequest request);
        [FaultContract(typeof(WCFServer.FaultContracts.DefaultFaultContract))]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "GetPlayerDetails")]
        WCFServer.ServiceContracts.GetPlayerDetailsResponse GetPlayerDetails(WCFServer.ServiceContracts.GetPlayerDetailsRequest request);
        [FaultContract(typeof(WCFServer.FaultContracts.DefaultFaultContract))]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "JoinGame")]
        WCFServer.ServiceContracts.JoinGameResponse JoinGame(WCFServer.ServiceContracts.JoinGameRequest request);
        [FaultContract(typeof(WCFServer.FaultContracts.DefaultFaultContract))]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "LeaveGame")]
        WCFServer.ServiceContracts.LeaveGameResponse LeaveGame(WCFServer.ServiceContracts.LeaveGameRequest request);
        [FaultContract(typeof(WCFServer.FaultContracts.DefaultFaultContract))]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "UserPlaceCard")]
        WCFServer.ServiceContracts.UserPlaceCardResponse UserPlaceCard(WCFServer.ServiceContracts.UserPlaceCardRequest request);
        [FaultContract(typeof(WCFServer.FaultContracts.DefaultFaultContract))]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "GetWinner")]
        WCFServer.ServiceContracts.GetWinnerResponse GetWinner(WCFServer.ServiceContracts.GetWinnerRequest request);
        [FaultContract(typeof(WCFServer.FaultContracts.DefaultFaultContract))]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "GetGameWinner")]
        WCFServer.ServiceContracts.GetGameWinnerResponse GetGameWinner(WCFServer.ServiceContracts.GetGameWinnerRequest request);
    }
}
